package com.example.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;

/**
 * 登录配置类
 * 
 * 职责：
 * 1. 管理爬虫登录相关的配置信息
 * 2. 提供登录参数的统一访问接口
 * 3. 支持多站点登录配置
 * 
 * 功能模块：
 * 1. 登录URL配置
 *    - 支持不同站点的登录页面URL
 *    - 支持动态URL生成
 * 
 * 2. 登录表单配置
 *    - 用户名输入框配置
 *    - 密码输入框配置
 *    - 提交按钮配置
 * 
 * 3. 登录凭证配置
 *    - 用户名配置
 *    - 密码配置
 *    - 支持多账号配置
 * 
 * 使用方式：
 * 1. 通过Spring依赖注入使用
 * 2. 在application.properties中配置参数
 * 3. 通过getter方法获取配置值
 */
@Data
@Component
@ConfigurationProperties(prefix = "crawler.login")
public class LoginConfig {
    /**
     * 站点登录配置映射
     * key: 站点名称
     * value: 站点登录信息
     */
    private Map<String, LoginInfo> sites = new HashMap<>();

    /**
     * 站点登录信息内部类
     * 用于存储单个站点的登录配置
     */
    @Data
    public static class LoginInfo {
        /**
         * 登录URL
         * 用于指定登录页面的URL地址
         */
        private String loginUrl;
        
        /**
         * 用户名
         * 用于登录的用户名或账号
         */
        private String username;
        
        /**
         * 密码
         * 用于登录的密码
         */
        private String password;
        
        /**
         * 用户名输入框名称
         * 登录表单中用户名输入框的name属性
         */
        private String usernameField = "username";
        
        /**
         * 密码输入框名称
         * 登录表单中密码输入框的name属性
         */
        private String passwordField = "password";
        
        /**
         * 提交按钮名称
         * 登录表单中提交按钮的name属性
         */
        private String submitButton = "submit";
    }
} 